
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class Main {

    public static void main(String[] args) throws IOException {

        // On définit les numéro de port de recepteur pour chaque process
        int numPortRecepteurProcess1 = 8082;
        int numPortRecepteurProcess2 = 8083;
        int numPortRecepteurProcess3 = 8084;
        int numPortRecepteurProcess4 = 8085;
        int numPortRecepteurProcess5 = 8086;

        //On ajoute tous ces ports dans une arraylist
        ArrayList<Integer> listeNumPort = new ArrayList<Integer>();
        listeNumPort.add(numPortRecepteurProcess1);
        listeNumPort.add(numPortRecepteurProcess2);
        listeNumPort.add(numPortRecepteurProcess3);
        //listeNumPort.add(numPortRecepteurProcess4);
        //listeNumPort.add(numPortRecepteurProcess5);        

        //On crée les process
        Process process1 = new Process(1, numPortRecepteurProcess1, listeNumPort);
        Process process2 = new Process(2, numPortRecepteurProcess2, listeNumPort);
        Process process3 = new Process(3, numPortRecepteurProcess3, listeNumPort);
        //Process process4 = new Process(4, numPortRecepteurProcess4, listeNumPort);
        //Process process5 = new Process(5, numPortRecepteurProcess5, listeNumPort);

        ArrayList<Process> listeProcess = new ArrayList<Process>();
        listeProcess.add(process1);
        listeProcess.add(process2);
        listeProcess.add(process3);

        //On lance les thread de chaque process
        //process1.lanceAllThread(listeProcess);
        //process2.lanceAllThread(listeProcess);
        //process3.lanceAllThread(listeProcess);
        //process4.lanceAllThread();
        //process5.lanceAllThread();

        process1.lanceClient();
        process2.lanceClient();
        process3.lanceClient();


        process1.lanceReception();
        process2.lanceReception();
        process3.lanceReception();


        process1.lanceEmission(listeProcess);
        process2.lanceEmission(listeProcess);
        process3.lanceEmission(listeProcess);


        process1.lancePere();
        process2.lancePere();
        process3.lancePere();


    }
}
